{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c8ee04b2",
   "metadata": {},
   "source": [
    "## 分类问题\n",
    "\n",
    "分类问题是当前机器学习的研究热点，它被广泛应用到各个领域，比图像识别、垃圾邮件处理、预测天气、疾病诊断等等。“分类问题”的预测结果是离散的，它比线性回归要更加复杂，那么我们应该从何处着手处理“分类问题”呢，这就引出了本节要讲的 Logistic 回归分类算法。\n",
    "\n",
    "分类问题的预测结果是离散型数据"
   ]
  },
  {
   "attachments": {
    "image-2.png": {
     "image/png": "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WXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo0AAgEBIiBdAQEExBQgAopZd1qNAAIBASIgXQEBBMQUIAKKWXdajQACAQEiIF0BAQTEFCACill3Wo2AiAJer9fn84W0nAgYAsKPCCAgiAARUJBC00wERBeQJEmn00mSFAJBBAwB4UcEEBBEgAgoSKFpJgLiCsiy3NLScuDAga+//poIKG4/oOUIIPCpABHwUw9+QgCBpBOora1NSUnR6/UZGRlEwKQrLw1CAIEYBYiAMcLxNgQQSBQBae3mdru1Wi0RMFGqxn4igMBOCxABd1qYz0cAgbgQIALGRRnYCQQQiBsBImDclIIdQQCB7RDw+Xzu3928Xq/6kSERUJZlZavUtZvyWJZldXseIIAAAsktQARM7vrSOgSEE5Ak6csvv9y3djMYDGr7QyKgXq9PWbv94dpNeazX69XteYAAAggktwARMLnrS+sQEE5AlmWj0di7dnM4HGr7QyKg1Wo1rt0OrN2Ux1arVd2eBwgggEByCxABk7u+tA4BBAICIRFQdWFdQJWCBwggIJQAEVCoctNYBMQVIAKKW3tajgACGwkQATdS4TkEEEg6AZ/PZ7Va10/44Chg0pWaBiGAQFQCRMComNgIAQSSVYAImKyVpV0IIBBegAgY3odXEUAgyQWIgEleYJqHAAKfESACfgaGpxFAQAwBIqAYdaaVCCAQKkAEDBXhZwQQEEqACChUuWksAgioAv8fU62bBskvktsAAAAASUVORK5CYII="
    },
    "image-3.png": {
     "image/png": "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"
    },
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "bc6c1ceb",
   "metadata": {},
   "source": [
    "## Logistic回归算法\n",
    "\n",
    "Logistic 回归算法，又叫做逻辑回归算法，或者 LR 算法（Logistic Regression）。分类问题同样也可以基于“线性模型”构建。“线性模型”最大的特点就是“直来直去”不会打弯，而我们知道，分类问题的预测结果是“离散的”，即对输出数据的类别做判断。比如将类别预设条件分为“0”类和“1”类（或者“是”或者“否”）那么图像只会在 “0”和“1”之间上下起伏，如下图所示：\n",
    "![image.png](attachment:image.png)\n",
    "\n",
    "注意：在机器学习中，Logistic 函数通常用来解决二元分类问题，也就是涉及两个预设类别的问题，而当类别数量超过两个时就需要使用 Softmax 函数来解决。\n",
    "\n",
    "19 世纪统计学家皮埃尔·弗朗索瓦·韦吕勒发明了 Logistic 函数，该函数的叫法有很多，比如在神经网络算法中被称为 Sigmoid 函数，也有人称它为 Logistic 曲线取值范围为 (0,1)。其函数图像如下所示：\n",
    "![image-2.png](attachment:image-2.png)\n",
    "![image-3.png](attachment:image-3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "782ec4ff",
   "metadata": {},
   "source": [
    "## 分类数据表示形式"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "788c078b",
   "metadata": {},
   "source": [
    "#### （1）向量形式\n",
    "在机器学习中，向量形式是应用最多的形式，使用向量中的元素按顺序代表“类别”。现在有以下三个类别分别是 a/b/c，此时就可以使用 [1,2,3] 来分别代表上述三类，预测结果为哪一类，向量中的元素就对应哪个元素，比如当预测结果为 c 类的时候，则输出以下数据：\n",
    "\n",
    "[0,0,3]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "126907f1",
   "metadata": {},
   "source": [
    "#### （2）数字形式\n",
    "数字形式是一种最简单的分类方式，我们可以用 0 代表“负类”（即 x < 0时的取值），而用“1”代表正类（即 x>0 时的取值），那么当预测结果输出“1”就代表正类，而预测结果输出“0”代表“负类”。当然这里选择的数字只是形式，你可以选择任意其他数字，不过按照约定俗成，我们一般采用 “1”代表正类，而 “-1”或者“0”代表“负类”。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "783d4c52",
   "metadata": {},
   "source": [
    "#### （3）概率形式\n",
    "在有些实际场景中，我们无法准确的判断某个“样本”属于哪个类别，此时我们就可以使用“概率”的形式来判断“样本”属于哪个类别的几率大，比如对某个“样本”有如下预测结果：\n",
    "\n",
    "[0.8,0.1,0.1]"
   ]
  },
  {
   "attachments": {
    "image-2.png": {
     "image/png": "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"
    },
    "image-3.png": {
     "image/png": "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"
    },
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "74ddba4d",
   "metadata": {},
   "source": [
    "## Logistic函数数学解析\n",
    "- （1）假设函数\n",
    "\n",
    " Logistic 函数能够很好的拟合“离散数据”，因此可以把它看做“假设函数”，但是还需要稍稍的改变一下形式，如下所示：\n",
    " ![image.png](attachment:image.png)\n",
    " 上述公式和 Logistic 函数基本一致，只不过我们它换成了关于x的表达式，并将幂指数x换成了 “线性函数”表达式。H(x) 的函数图像呈现 S 形分布，从而能够预测出离散的输出结果\n",
    " \n",
    " - （2）损失函数\n",
    "\n",
    " LogIstic 回归算法的损失函数有点复杂，也许你会感动莫名其妙，损失函数的表达式如下：\n",
    " ![image-2.png](attachment:image-2.png)\n",
    " 想要理解损失函数，我们需要继续分析假设函数。我们知道假设函数的值域是从 (0,1) 之间的数值，而这个数据区间恰好与概率值区间不谋而合。如果我们把预测结果看做概率，则可以得到另外一种写法的损失函数：\n",
    " ![image-3.png](attachment:image-3.png)\n",
    " \n",
    "上述函数能够表达预测值和实际值之间的偏差，但它有一个缺点就是不能使用梯度下降等优化方法。因此，在机器学习中要通过取对数的方法来解决此问题，这样就得到了最开始的损失函数。如下所示：\n",
    "![image-2.png](attachment:image-2.png)\n",
    "\n",
    "- （3）优化方法\n",
    "如果将 Logistic 函数的输出记做 z 可得如下公式：\n",
    "z=wTx\n",
    "它表示将这两个数值向量对应元素相乘然后全部加起来即得到 z 值。其中的 x 是分类器的输入数据，向量 w （最佳参数）会使得分类器尽可能的精确。为了寻找该最佳参数就需要用到优化方法，下面我们简单介绍梯度上升优化方法。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9becddf1",
   "metadata": {},
   "source": [
    "## 常用的回归算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3e49309b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data数组类型: <class 'numpy.ndarray'>\n",
      "前五朵花数据:\n",
      "[[5.1 3.5 1.4 0.2]\n",
      " [4.9 3.  1.4 0.2]\n",
      " [4.7 3.2 1.3 0.2]\n",
      " [4.6 3.1 1.5 0.2]\n",
      " [5.  3.6 1.4 0.2]]\n",
      "[2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0\n",
      " 2]\n",
      "0.9736842105263158\n"
     ]
    }
   ],
   "source": [
    "#logistic算法\n",
    "#从 scikit-learn库导入线性模型中的logistic回归算法\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "#导入sklearn 中的自带数据集 鸢尾花数据集\n",
    "from sklearn.datasets import load_iris\n",
    "\n",
    "# skleran 提供的分割数据集的方法\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "#载入鸢尾花数据集\n",
    "iris_dataset=load_iris()\n",
    "\n",
    "# data 数组的每一行对应一朵花，列代表每朵花的四个测量数据，分别是：花瓣的长度，宽度，花萼的长度、宽度\n",
    "print(\"data数组类型: {}\".format(type(iris_dataset['data'])))\n",
    "# 前五朵花的数据\n",
    "\n",
    "print(\"前五朵花数据:\\n{}\".format(iris_dataset['data'][:5]))\n",
    "#分割数据集训练集，测试集\n",
    "X_train,X_test,Y_train,Y_test=train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0)\n",
    "\n",
    "#训练模型\n",
    "#设置最大迭代次数为3000，默认为1000.不更改会出现警告提示\n",
    "log_reg = LogisticRegression(max_iter=3000)\n",
    "\n",
    "#给模型喂入数据\n",
    "clm=log_reg.fit(X_train,Y_train)\n",
    "\n",
    "#使用模型对测试集分类预测,并打印分类结果\n",
    "print(clm.predict(X_test))\n",
    "#最后使用性能评估器，测试模型优良，用测试集对模型进行评分\n",
    "print(clm.score(X_test,Y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73ffcd75",
   "metadata": {},
   "source": [
    "## 总结\n",
    "\n",
    "最后，我们对 Logistic 算法做一下简单总结：首先 Logistic 算法适用于分类问题，该算法在处理二分类问题上表现优越，但在多分类（二个以上）问题上容易出现欠拟合。Logistic 算法除了适用于回归分类问题，还可以作为神经网络算法的激活函数（即 Sigmoid 函数）。\n",
    "\n",
    "机器学习中有许多的算法，我们不能评价一个算法的优劣性，因为算法只有合适与不合适，每个算法都有其适用的场景。因此，我们不能仅依据模型评分来评价模型的好与坏。这就好比从每个班级中选出数学非常优秀的学生去参加数学竞赛一样，如果竞赛的第一名只得了 60 分，而其余学生都不及格，那你会说他们都是是个差生吗，因此，在后续学习机器学习算法的过程中要牢记这一点。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
